#include "hal_key.h"
#include "hk32c030xx_gpio.h"

static void test_key_init() {
    
	GPIO_InitTypeDef test_key;
	RCC_AHBPeriphClockCmd(TEST_KEY_RCU, ENABLE);
	
	test_key.GPIO_Pin = TEST_MODE_KEY_PIN | TEST_KEY_UP_PIN | TEST_KEY_DOWN_PIN;
	test_key.GPIO_Mode = GPIO_Mode_IN;
	test_key.GPIO_OType = GPIO_OType_PP;
	test_key.GPIO_Speed = GPIO_Speed_10MHz;
	test_key.GPIO_PuPd = GPIO_PuPd_NOPULL;
	test_key.GPIO_Schmit = GPIO_Schmit_Disable;
	GPIO_Init(TEST_KEY_BASE, &test_key);
}

static uint8_t test_key_mode() {

	if(GPIO_ReadInputDataBit(TEST_KEY_BASE,TEST_MODE_KEY_PIN))
		return 0;
	else 
		return 1;
}

static uint8_t test_key_up(void) {

	if(GPIO_ReadInputDataBit(TEST_KEY_BASE,TEST_KEY_UP_PIN))
		return 0;
	return 1;
}

static uint8_t test_key_down(void) {

	if(GPIO_ReadInputDataBit(TEST_KEY_BASE,TEST_KEY_DOWN_PIN))
		return 0;
	return 1;
}

const test_key_t g_test_ = {
    test_key_init,
    test_key_mode,
    test_key_up,
	test_key_down,
};
